package main

import "fmt"

//append() 为切片追加元素
func main() {
	//开始len=4，cap=4
	s1 := [4]string{"北京", "上海", "深圳"}
	fmt.Printf("%s,len(s1)=%d,cap(s1)=%d \n", s1, len(s1), cap(s1))
	s1[3] = "广州"
	fmt.Println(s1)

	//s11 的len=3,cap=3
	s11 := []string{"北京", "上海", "深圳"}
	/* 	s11[3] = "广州" //错误的写法，会导致编译错误：索引越界，查看cap
	   	fmt.Println(s11) */
	fmt.Printf("s11=%s len(s11)=%d,cap(s11)=%d \n", s11, len(s11), cap(s11))
	//调用append函数必须使用原来切片变量接收返回值
	//append追加元素，原来的数组保存不下时，go底层就会把底层数组换一个
	//必须使用变量接收append
	s11 = append(s11, "广州")
	//len=4,cap=6
	fmt.Printf("s11=%s len(s11)=%d,cap(s11)=%d \n", s11, len(s11), cap(s11))

	s11 = append(s11, "杭州", "成都")
	fmt.Printf("s11=%s len(s11)=%d,cap(s11)=%d \n", s11, len(s11), cap(s11))

	ss := []string{"武汉", "西安", "苏州"}
	s11 = append(s11, ss...) //...表示拆开
	fmt.Printf("s11=%s len(s11)=%d,cap(s11)=%d \n", s11, len(s11), cap(s11))

}
